package org.ruoyi.interview.service;

import org.ruoyi.common.mybatis.core.page.PageQuery;
import org.ruoyi.common.mybatis.core.page.TableDataInfo;
import org.ruoyi.interview.domain.bo.InterviewQuestionMasteredBo;
import org.ruoyi.interview.domain.vo.InterviewQuestionMasteredCategoryVo;
import org.ruoyi.interview.domain.vo.InterviewQuestionMasteredVo;
import org.ruoyi.interview.domain.vo.InterviewQuestionFavoriteCategoryVo;

import java.util.List;

/**
 * 面试题掌握Service接口
 *
 * @author ruoyi
 */
public interface IInterviewQuestionMasteredService {

    /**
     * 查询面试题掌握
     *
     * @param masteredId 掌握主键
     * @return 面试题掌握
     */
    InterviewQuestionMasteredVo selectInterviewQuestionMasteredById(Long masteredId);

    /**
     * 查询面试题掌握列表
     *
     * @param bo 面试题掌握业务对象
     * @return 面试题掌握集合
     */
    List<InterviewQuestionMasteredVo> selectInterviewQuestionMasteredList(InterviewQuestionMasteredBo bo);

    /**
     * 查询面试题掌握列表
     *
     * @param bo 面试题掌握业务对象
     * @param pageQuery 分页参数
     * @return 面试题掌握集合
     */
    TableDataInfo<InterviewQuestionMasteredVo> selectInterviewQuestionMasteredList(InterviewQuestionMasteredBo bo, PageQuery pageQuery);

    /**
     * 查询面试题掌握列表及题目详情
     *
     * @param bo 面试题掌握业务对象
     * @param pageQuery 分页参数
     * @return 面试题掌握集合
     */
    TableDataInfo<InterviewQuestionMasteredCategoryVo> selectInterviewQuestionMasteredQuestionList(InterviewQuestionMasteredBo bo, PageQuery pageQuery);

    /**
     * 新增面试题掌握
     *
     * @param bo 面试题掌握业务对象
     * @return 结果
     */
    Boolean insertInterviewQuestionMastered(InterviewQuestionMasteredBo bo);

    /**
     * 批量删除面试题掌握
     *
     * @param questionId 需要删除的题目ID
     * @return 结果
     */
    Boolean deleteInterviewQuestionMasteredByQuestionId(Long questionId);

    /**
     * 根据用户ID和题目ID查询掌握记录
     *
     * @param userId 用户ID
     * @param questionId 题目ID
     * @return 掌握记录
     */
    InterviewQuestionMasteredVo selectInterviewQuestionMasteredByUserIdAndQuestionId(Long userId, Long questionId);
}
